mscJNeuralNet.trainingAlgorithms
Class QuickProp

java.lang.Object
  extended bymscJNeuralNet.trainingAlgorithms.AbstractTrainingAlgorithm
      extended bymscJNeuralNet.trainingAlgorithms.QuickProp
All Implemented Interfaces:
INetTrainingAlgorithm, observerPattern.Observable

public class QuickProp
extends AbstractTrainingAlgorithm

Das Quick Propagation Lernverfahren nach Fahlman. Implentiert nach der Arbeit Scott E. Fahlman, An Empirical Study of Learning Speed in Back-Propagation Networks, 1988 und der Internetseite Description and Implementation of the Algorithm

Das Quickprop Lernverfahren benutzt das Newtonsche Abstiegsverfahren zur Ermittlung eines Minimums und ist daher recht schnell.

Die Aktualisierung der Kantengewichte wird wie folgt berechnet:
(Auszug aus Prof. Dr. H. Westenberger, Skript Neuronale Netze 99V011)

 		Gradiententerm
 	    G = - alpha * Gradient Wij falls Gradient Wij = 0 oder 
                                       Delta WijAlt = 0 oder 
                                       sign(Gradient Wij) == sign(Gradient WijAlt)
      G = 0 sonst
 
      Parabelterm
      P = 0 falls getCycle() == 0 oder 
                  Delta WijAlt == 0 oder 
                  Math.abs(Gradient Wij) > Math.abs(Gradient WijAlt)
            sonst
      P = Math.min(MaxGrowthRate, (Gradient Wij / (Gradient WijAlt-Gradient Wij))) * Delta WijAlt

      Delta Wij = G + P
 
Der normalerweise übliche Momentumterm für G (hier normales Backpropagation) wurde nicht implementiert.

Created on 03.06.2004

Version:
05.06.2004
Author:
M. Serhat Cinar
See Also:
INetTrainingAlgorithm, AbstractTrainingAlgorithm, mscJNeuralNet.trainingAlgorithms

Constructor Summary
QuickProp()
           
 
Method Summary
 void applyWeightUpdate(int pOutputting, int pInputting)
          Derzeit leer.
 java.lang.String getAlgorithmName()
          Liefert den String "QuickProp" zurück.
 double[] getDefaultLearningParameters()
          Dieses Lernverfahren unterstützt folgende Parameter:
Index Bezeichnung Funktion 0 Alpha Lernschrittweite 1 MaxGrowthRate Beschränkt die gemachten Schrittweiten als Maximum.
 java.lang.String[] getLearningParameterNames()
          Dieses Lernverfahren unterstützt folgende Parameter:
Index Bezeichnung Funktion 0 Alpha Lernschrittweite 1 MaxGrowthRate Beschränkt die gemachten Schrittweiten als Maximum.
 double[] getLearningParameters()
          Dieses Lernverfahren unterstützt folgende Parameter:
Index Bezeichnung Funktion 0 Alpha Lernschrittweite 1 MaxGrowthRate Beschränkt die gemachten Schrittweiten als Maximum.
 void init()
          Derzeit leer.
 void setLearningParameters(double[] pLearningParameters)
          Dieses Lernverfahren unterstützt folgende Parameter:
Index Bezeichnung Funktion 0 Alpha Lernschrittweite 1 MaxGrowthRate Beschränkt die gemachten Schrittweiten als Maximum.
 java.lang.String toString()
           
 
Methods inherited from class mscJNeuralNet.trainingAlgorithms.AbstractTrainingAlgorithm
getActualGradients, getCycle, getNet, getObserverManager, setActualGradients, setCycle, setNet
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

QuickProp

public QuickProp()
Method Detail

init

public void init()
Description copied from class: AbstractTrainingAlgorithm
Derzeit leer.

Specified by:
init in interface INetTrainingAlgorithm
Overrides:
init in class AbstractTrainingAlgorithm
See Also:
INetTrainingAlgorithm.init()

applyWeightUpdate

public void applyWeightUpdate(int pOutputting,
                              int pInputting)
Description copied from class: AbstractTrainingAlgorithm
Derzeit leer.

Specified by:
applyWeightUpdate in interface INetTrainingAlgorithm
Overrides:
applyWeightUpdate in class AbstractTrainingAlgorithm
See Also:
INetTrainingAlgorithm.applyWeightUpdate(int, int)

setLearningParameters

public void setLearningParameters(double[] pLearningParameters)
Dieses Lernverfahren unterstützt folgende Parameter:
 Index  Bezeichnung   Funktion
   0    Alpha         Lernschrittweite
   1    MaxGrowthRate Beschränkt die gemachten Schrittweiten als Maximum.
 
Am Ende der Methode werden die Observer benachrichtigt.

Parameters:
pLearningParameters - Lernparameter für das Lernverfahren fest.
See Also:
INetTrainingAlgorithm.setLearningParameters(double[])

getLearningParameters

public double[] getLearningParameters()
Dieses Lernverfahren unterstützt folgende Parameter:
 Index  Bezeichnung   Funktion
   0    Alpha         Lernschrittweite
   1    MaxGrowthRate Beschränkt die gemachten Schrittweiten als Maximum.
 

Returns:
Aktuelle Lernparameter für das Lernverfahren.
See Also:
INetTrainingAlgorithm.getLearningParameters()

getDefaultLearningParameters

public double[] getDefaultLearningParameters()
Dieses Lernverfahren unterstützt folgende Parameter:
 Index  Bezeichnung   Funktion
   0    Alpha         Lernschrittweite
   1    MaxGrowthRate Beschränkt die gemachten Schrittweiten als Maximum.
 

Returns:
Initialwerte für die Lernparameter des Lernverfahrens.
See Also:
INetTrainingAlgorithm.getDefaultLearningParameters()

getLearningParameterNames

public java.lang.String[] getLearningParameterNames()
Dieses Lernverfahren unterstützt folgende Parameter:
 Index  Bezeichnung   Funktion
   0    Alpha         Lernschrittweite
   1    MaxGrowthRate Beschränkt die gemachten Schrittweiten als Maximum.
 

Returns:
Die Bezeichnungen für die Lernparameter.
See Also:
INetTrainingAlgorithm.getLearningParameterNames()

getAlgorithmName

public java.lang.String getAlgorithmName()
Liefert den String "QuickProp" zurück.

Returns:
Namen des Lernverfahrens.
See Also:
INetTrainingAlgorithm.getAlgorithmName()

toString

public java.lang.String toString()